package com.lks.common.controller;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.lks.users.pojo.AAdmins;
import com.lks.users.service.IUsersService;

@Controller
public class NoLoginController extends BaseController
{
	@Resource
	private IUsersService usersService;

	/**
	 * 打开登录的页面
	 */
	@RequestMapping("/adminsLogin.htm")
	public String adminsLogin(HttpServletRequest request)
	{
		HttpSession session = request.getSession();
		AAdmins admins = (AAdmins) session.getAttribute("admins");
		if (admins != null)
		{
			/* 说明已经登陆 */
			/* 页面跳转(客户端) */
			return "redirect:/back/admins/index.htm" ; 
		}
		return "/back/adminsLogin";
	}

	/**
	 * 提交用户登录的页面
	 * 
	 * @return
	 */
	@RequestMapping("adminsLoginSubmit.htm")
	public String adminsLoginSubmit(String email, String password, String code, HttpServletRequest req)
	{
		/**
		 * 分析：实现登录成功：
		 * 
		 * 跳转到index的页面 登录失败：
		 * 
		 * 回到login的页面，其中带有info的参数
		 * 
		 * 1.接收参数 2.处理参数 3.根据emails查询管理员（数据库） 4.判断
		 */
		HttpSession session = req.getSession();

		/* 从session中获取到code */
		String codeSess = session.getAttribute("code") + "";
		/*
		 * 将当前验证码从session中移除 登陆成功或者登陆失败(并且抛出异常):验证码木有重新加载;session中的验证码可以重复利用
		 * 
		 * 移除验证码(可以session销毁吗?) session.invalidate();
		 */
		session.removeAttribute("code");
		if (codeSess != null && codeSess.equalsIgnoreCase(code))
		{
			if (email != null && !"".equalsIgnoreCase(email))
			{
				Map<String, Object> condMap = new HashMap<String, Object>();
				/* 如果email为null的时候会查询多条语句 */
				condMap.put("email", email);
				AAdmins admins = this.usersService.findOneAdminsService(condMap);
				if (admins != null)
				{
					// 用户登录
					if (this.encryptUtil.checkPassword(password, admins.getPassword()))
					{
						// 密码正确
						if ((int) admins.getStatus() == 1)
						{
							/**
							 * 用户登录成功
							 * 
							 * 管理员对象（session） 上次登录时间 更新登录时间
							 */
							session.setAttribute("admins", admins);
							session.setAttribute("lastTime", admins.getLastTime());
							/* 更新时间 */
							admins.setLastTime(new Date());
							/* 存入数据库中 */
							this.usersService.updateOneAdminsService(admins);

							/* 页面跳转,跳转到了index的页面 */
							return "redirect:/back/admins/index.htm";
						} else
						{
							info = "用户被禁用";
						}
					} else
					{
						info = "密码不正确";
					}
				} else
				{
					info = "邮箱不存在";
				}
			} else
			{
				info = "email不正确";
			}
		} else
		{
			info = "验证码不正确";
		}
		session.setAttribute("info", info);
		return this.adminsLogin(req);
	}
}
